home *** CD-ROM | disk | FTP | other *** search
/ Aminet 48 / Aminet 48 (2002)(GTI - Schatztruhe)[!][Apr 2002].iso / Aminet / text / edit / vim60rt.lha / Vim / vim60 / syntax / ruby.vim < prev    next >
Encoding:
Text File  |  2001-05-11  |  14.5 KB  |  219 lines

  1. " Vim syntax file
  2. " Language:     Ruby
  3. " Maintainer:   Mirko Nasato
  4. " Last Change:  2001 May 10
  5. " Location:     http://altern.org/mn/ruby/ruby.vim
  6.  
  7. " See http://altern.org/mn/ruby/vim.html for documentation.
  8. " Thanks to perl.vim authors, and to Reimer Behrends. :-)
  9.  
  10. " For version 5.x: Clear all syntax items
  11. " For version 6.x: Quit when a syntax file was already loaded
  12. if version < 600
  13.   syntax clear
  14. elseif exists("b:current_syntax")
  15.   finish
  16. endif
  17.  
  18. " Expression Substitution: and Backslash Notation
  19. syn match   rubyExprSubst  "\\\\\|\(\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\w\)\|\(\\\o\{3}\|\\x\x\{2}\|\\[tnrfbaes]\)" contained
  20. syn match   rubyExprSubst  "#{[^}]*}" contained
  21. syn match   rubyExprSubst  "#[$@]\w\+" contained
  22.  
  23. " Numbers: and ASCII Codes
  24. syn match   rubyNumber  "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>"
  25. syn match   rubyNumber  "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)"
  26.  
  27. " Special Identifiers: instance, global, symbol, iterator, predefined
  28. if !exists("ruby_no_identifiers")
  29.   syn match   rubyIdentifier  "\<\u\w*"
  30.   syn match   rubyIdentifier  "@\h\w*"
  31.   syn match   rubyIdentifier  "$\h\w*"
  32.   syn match   rubyIdentifier  "\s:\h\w*"
  33.   syn match   rubyIdentifier  "|[ ,a-zA-Z0-9_*]\+|"
  34.   syn match   rubyIdentifier  "$[\\\"/:'&`+*.,;=~!?@$<>0-9]"
  35.   syn match   rubyIdentifier  "$-[0adFiIlpv]"
  36. endif
  37.  
  38. "
  39. " BEGIN Autogenerated Stuff (Ruby script @ http://altern.org/mn/ruby/vimregions.rb)
  40. "
  41. " Generalized Regular Expression:
  42. syn region rubyString matchgroup=rubyStringDelimit start="%r!" end="![iopx]*" skip="\\\\\|\\!" contains=rubyExprSubst
  43. syn region rubyString matchgroup=rubyStringDelimit start="%r\"" end="\"[iopx]*" skip="\\\\\|\\\"" contains=rubyExprSubst
  44. syn region rubyString matchgroup=rubyStringDelimit start="%r#" end="#[iopx]*" skip="\\\\\|\\#" contains=rubyExprSubst
  45. syn region rubyString matchgroup=rubyStringDelimit start="%r\$" end="\$[iopx]*" skip="\\\\\|\\\$" contains=rubyExprSubst
  46. syn region rubyString matchgroup=rubyStringDelimit start="%r%" end="%[iopx]*" skip="\\\\\|\\%" contains=rubyExprSubst
  47. syn region rubyString matchgroup=rubyStringDelimit start="%r&" end="&[iopx]*" skip="\\\\\|\\&" contains=rubyExprSubst
  48. syn region rubyString matchgroup=rubyStringDelimit start="%r'" end="'[iopx]*" skip="\\\\\|\\'" contains=rubyExprSubst
  49. syn region rubyString matchgroup=rubyStringDelimit start="%r\*" end="\*[iopx]*" skip="\\\\\|\\\*" contains=rubyExprSubst
  50. syn region rubyString matchgroup=rubyStringDelimit start="%r+" end="+[iopx]*" skip="\\\\\|\\+" contains=rubyExprSubst
  51. syn region rubyString matchgroup=rubyStringDelimit start="%r-" end="-[iopx]*" skip="\\\\\|\\-" contains=rubyExprSubst
  52. syn region rubyString matchgroup=rubyStringDelimit start="%r\." end="\.[iopx]*" skip="\\\\\|\\\." contains=rubyExprSubst
  53. syn region rubyString matchgroup=rubyStringDelimit start="%r/" end="/[iopx]*" skip="\\\\\|\\/" contains=rubyExprSubst
  54. syn region rubyString matchgroup=rubyStringDelimit start="%r:" end=":[iopx]*" skip="\\\\\|\\:" contains=rubyExprSubst
  55. syn region rubyString matchgroup=rubyStringDelimit start="%r;" end=";[iopx]*" skip="\\\\\|\\;" contains=rubyExprSubst
  56. syn region rubyString matchgroup=rubyStringDelimit start="%r=" end="=[iopx]*" skip="\\\\\|\\=" contains=rubyExprSubst
  57. syn region rubyString matchgroup=rubyStringDelimit start="%r?" end="?[iopx]*" skip="\\\\\|\\?" contains=rubyExprSubst
  58. syn region rubyString matchgroup=rubyStringDelimit start="%r@" end="@[iopx]*" skip="\\\\\|\\@" contains=rubyExprSubst
  59. syn region rubyString matchgroup=rubyStringDelimit start="%r\\" end="\\[iopx]*"  contains=rubyExprSubst
  60. syn region rubyString matchgroup=rubyStringDelimit start="%r\^" end="\^[iopx]*" skip="\\\\\|\\\^" contains=rubyExprSubst
  61. syn region rubyString matchgroup=rubyStringDelimit start="%r`" end="`[iopx]*" skip="\\\\\|\\`" contains=rubyExprSubst
  62. syn region rubyString matchgroup=rubyStringDelimit start="%r|" end="|[iopx]*" skip="\\\\\|\\|" contains=rubyExprSubst
  63. syn region rubyString matchgroup=rubyStringDelimit start="%r\~" end="\~[iopx]*" skip="\\\\\|\\\~" contains=rubyExprSubst
  64. syn region rubyString matchgroup=rubyStringDelimit start="%r{" end="}[iopx]*" skip="\\\\\|\\}" contains=rubyExprSubst
  65. syn region rubyString matchgroup=rubyStringDelimit start="%r<" end=">[iopx]*" skip="\\\\\|\\>" contains=rubyExprSubst
  66. syn region rubyString matchgroup=rubyStringDelimit start="%r\[" end="\][iopx]*" skip="\\\\\|\\\]" contains=rubyExprSubst
  67. syn region rubyString matchgroup=rubyStringDelimit start="%r(" end=")[iopx]*" skip="\\\\\|\\)" contains=rubyExprSubst
  68.  
  69. " Generalized Single Quoted String and Array of Strings:
  70. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]!" end="!" skip="\\\\\|\\!"
  71. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\"" end="\"" skip="\\\\\|\\\""
  72. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]#" end="#" skip="\\\\\|\\#"
  73. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\$" end="\$" skip="\\\\\|\\\$"
  74. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]%" end="%" skip="\\\\\|\\%"
  75. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]&" end="&" skip="\\\\\|\\&"
  76. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]'" end="'" skip="\\\\\|\\'"
  77. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\*" end="\*" skip="\\\\\|\\\*"
  78. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]+" end="+" skip="\\\\\|\\+"
  79. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]-" end="-" skip="\\\\\|\\-"
  80. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\." end="\." skip="\\\\\|\\\."
  81. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]/" end="/" skip="\\\\\|\\/"
  82. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]:" end=":" skip="\\\\\|\\:"
  83. syn region rubyString matchgroup=rubyStringDelimit start="%[wq];" end=";" skip="\\\\\|\\;"
  84. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]=" end="=" skip="\\\\\|\\="
  85. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]?" end="?" skip="\\\\\|\\?"
  86. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]@" end="@" skip="\\\\\|\\@"
  87. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\\" end="\\"
  88. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\^" end="\^" skip="\\\\\|\\\^"
  89. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]`" end="`" skip="\\\\\|\\`"
  90. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]|" end="|" skip="\\\\\|\\|"
  91. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\~" end="\~" skip="\\\\\|\\\~"
  92. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]{" end="}" skip="\\\\\|\\}"
  93. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]<" end=">" skip="\\\\\|\\>"
  94. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\[" end="\]" skip="\\\\\|\\\]"
  95. syn region rubyString matchgroup=rubyStringDelimit start="%[wq](" end=")" skip="\\\\\|\\)"
  96.  
  97. " Generalized Double Quoted String and Shell Command Output:
  98. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=!" end="!" skip="\\\\\|\\!" contains=rubyExprSubst
  99. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\"" end="\"" skip="\\\\\|\\\"" contains=rubyExprSubst
  100. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=#" end="#" skip="\\\\\|\\#" contains=rubyExprSubst
  101. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\$" end="\$" skip="\\\\\|\\\$" contains=rubyExprSubst
  102. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=%" end="%" skip="\\\\\|\\%" contains=rubyExprSubst
  103. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=&" end="&" skip="\\\\\|\\&" contains=rubyExprSubst
  104. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\='" end="'" skip="\\\\\|\\'" contains=rubyExprSubst
  105. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\*" end="\*" skip="\\\\\|\\\*" contains=rubyExprSubst
  106. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=+" end="+" skip="\\\\\|\\+" contains=rubyExprSubst
  107. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=-" end="-" skip="\\\\\|\\-" contains=rubyExprSubst
  108. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\." end="\." skip="\\\\\|\\\." contains=rubyExprSubst
  109. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=/" end="/" skip="\\\\\|\\/" contains=rubyExprSubst
  110. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=:" end=":" skip="\\\\\|\\:" contains=rubyExprSubst
  111. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=;" end=";" skip="\\\\\|\\;" contains=rubyExprSubst
  112. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\==" end="=" skip="\\\\\|\\=" contains=rubyExprSubst
  113. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=?" end="?" skip="\\\\\|\\?" contains=rubyExprSubst
  114. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=@" end="@" skip="\\\\\|\\@" contains=rubyExprSubst
  115. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\\" end="\\"  contains=rubyExprSubst
  116. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\^" end="\^" skip="\\\\\|\\\^" contains=rubyExprSubst
  117. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=`" end="`" skip="\\\\\|\\`" contains=rubyExprSubst
  118. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=|" end="|" skip="\\\\\|\\|" contains=rubyExprSubst
  119. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\~" end="\~" skip="\\\\\|\\\~" contains=rubyExprSubst
  120. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\={" end="}" skip="\\\\\|\\}" contains=rubyExprSubst
  121. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=<" end=">" skip="\\\\\|\\>" contains=rubyExprSubst
  122. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\[" end="\]" skip="\\\\\|\\\]" contains=rubyExprSubst
  123. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=(" end=")" skip="\\\\\|\\)" contains=rubyExprSubst
  124.  
  125. " Normal String and Shell Command Output:
  126. syn region rubyString matchgroup=rubyStringDelimit start="\"" end="\"" skip="\\\\\|\\\"" contains=rubyExprSubst
  127. syn region rubyString matchgroup=rubyStringDelimit start="'" end="'" skip="\\\\\|\\'"
  128. syn region rubyString matchgroup=rubyStringDelimit start="`" end="`" skip="\\\\\|\\`" contains=rubyExprSubst
  129. "
  130. " END Autogenerated Stuff
  131. "
  132.  
  133. " Normal Regular Expression:
  134. syn region  rubyString  matchgroup=rubyStringDelimit start="\<if\s*/"lc=2 start="[\~=!|&(,]\s*/"lc=1 end="/[iopx]*" skip="\\\\\|\\/" contains=rubyExprSubst
  135.  
  136. " Here Document:
  137. syn region  rubyString matchgroup=rubyStringDelimit start=+<<-\(\u\{3,}\|'\u\{3,}'\|"\u\{3,}"\|`\u\{3,}`\)+hs=s+2 end=+^\s*\u\{3,}$+
  138. syn region  rubyString matchgroup=rubyStringDelimit start=+<<-\(EOF\|'EOF'\|"EOF"\|`EOF`\)+hs=s+2 end=+^\s*EOF$+ contains=rubyExprSubst
  139. syn region  rubyString matchgroup=rubyStringDelimit start=+<<-\(EOS\|'EOS'\|"EOS"\|`EOS`\)+hs=s+2 end=+^\s*EOS$+ contains=rubyExprSubst
  140. syn region  rubyString matchgroup=rubyStringDelimit start=+<<\(\u\{3,}\|'\u\{3,}'\|"\u\{3,}"\|`\u\{3,}`\)+hs=s+2 end=+^\u\{3,}$+
  141. syn region  rubyString matchgroup=rubyStringDelimit start=+<<\(EOF\|'EOF'\|"EOF"\|`EOF`\)+hs=s+2 end=+^EOF$+ contains=rubyExprSubst
  142. syn region  rubyString matchgroup=rubyStringDelimit start=+<<\(EOS\|'EOS'\|"EOS"\|`EOS`\)+hs=s+2 end=+^EOS$+ contains=rubyExprSubst
  143.  
  144. " Expensive Mode: colorize *end* according to opening statement
  145. if !exists("ruby_no_expensive")
  146.   syn region  rubyFunction  matchgroup=rubyDefine start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline
  147.   syn region  rubyClassOrModule  matchgroup=rubyDefine start="^\s*\(class\|module\)\s" end="<\|$\|;"he=e-1 oneline
  148.   syn region  rubyBlock  start="^\s*def\s\+"rs=s matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo nextgroup=rubyFunction
  149.   syn region  rubyBlock  start="^\s*\(class\|module\)\>"rs=s matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo nextgroup=rubyClassOrModule
  150.   " modifiers + redundant *do*
  151.   syn match   rubyControl  "\<\(if\|unless\|while\|until\|do\)\>"
  152.   " *do* requiring *end*
  153.   syn region  rubyDoBlock  matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo
  154.   " statements without *do*
  155.   syn region  rubyNoDoBlock  matchgroup=rubyControl start="\<\(case\|begin\)\>" start="^\s*\(if\|unless\)\>" start=";\s*\(if\|unless\)\>"hs=s+1 end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo
  156.   " statement with optional *do*
  157.   syn region  rubyOptDoBlock matchgroup=rubyControl start="\<for\>" start="^\s*\(while\|until\)\>" start=";\s*\(while\|until\)\>"hs=s+1 end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo,rubyDoBlock
  158.  
  159.   if !exists("ruby_minlines")
  160.     let ruby_minlines = 50
  161.   endif
  162.   exec "syn sync minlines=" . ruby_minlines
  163.  
  164. else " not Expensive
  165.   syn region  rubyFunction  matchgroup=rubyControl start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline
  166.   syn region  rubyClassOrModule  matchgroup=rubyControl start="^\s*\(class\|module\)\s" end="<\|$\|;"he=e-1 oneline
  167.   syn keyword rubyControl case begin do for if unless while until end
  168. endif " Expensive?
  169.  
  170. " Keywords:
  171. syn keyword rubyControl  then else elsif when ensure rescue
  172. syn keyword rubyControl  and or not in yield lambda proc loop
  173. syn keyword rubyControl  break redo retry next return
  174. syn match   rubyInclude  "^\s*include\>"
  175. syn keyword rubyInclude  require
  176. syn keyword rubyTodo  TODO FIXME XXX contained
  177. syn keyword rubyBoolean  true false self nil
  178. syn keyword rubyException  raise fail catch throw
  179.  
  180. " Comments: and Documentation
  181. syn match   rubyComment  "#.*" contains=rubyTodo
  182. syn match   rubySharpBang  "#!.*"
  183. syn region  rubyDocumentation  start="^=begin" end="^=end.*$" contains=rubyTodo
  184.  
  185. " Define the default highlighting.
  186. " For version 5.7 and earlier: only when not done already
  187. " For version 5.8 and later: only when an item doesn't have highlighting yet
  188. if version >= 508 || !exists("did_ruby_syntax_inits")
  189.   if version < 508
  190.     let did_ruby_syntax_inits = 1
  191.     command -nargs=+ HiLink hi link <args>
  192.   else
  193.     command -nargs=+ HiLink hi def link <args>
  194.   endif
  195.  
  196.   HiLink rubyDefine          Define
  197.   HiLink rubyFunction        Function
  198.   HiLink rubyControl         Statement
  199.   HiLink rubyInclude         Include
  200.   HiLink rubyNumber          Number
  201.   HiLink rubyBoolean         Boolean
  202.   HiLink rubyException       Exception
  203.   HiLink rubyClassOrModule   Type
  204.   HiLink rubyIdentifier      Special
  205.   HiLink rubySharpBang       PreProc
  206.  
  207.   HiLink rubyString          String
  208.   HiLink rubyStringDelimit   Delimiter
  209.   HiLink rubyExprSubst       Special
  210.  
  211.   HiLink rubyComment         Comment
  212.   HiLink rubyDocumentation   Comment
  213.   HiLink rubyTodo            Todo
  214.  
  215.   delcommand HiLink
  216. endif
  217.  
  218. let b:current_syntax = "ruby"
  219.